|
(*~\Глагол\Отделы\Поле~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
(**) ОТДЕЛ СтрокиПамятки;
(*============================================================================*
* НАЗНАЧЕНИЕ: строки для Памятки
*============================================================================*)
ИСПОЛЬЗУЕТ
Надел,
Поле,
Памятка,
Окно ИЗ "..\Обмен\",
Ввод ИЗ "..\Обмен\";
ВИД
Доступ-=ДОСТУП К Вид;
Вид-=НАБОР(Надел.Вид)
памятка :Памятка.Доступ;
(* строки памятки: *)
последняя:ЦЕЛ;
верхняя :ЦЕЛ;
текущая- :ЦЕЛ;
КОН;
(******************************************************************************)
ЗАДАЧА Отрисовка(строки:Доступ);
ПЕР
памятка:Памятка.Доступ;
лк,пк,вс,нс:ЦЕЛ;
цвет:ЗНАК;
со:ЦЕЛ; (* строка отображения *)
строка:ЦЕЛ; (* памятки *)
УКАЗ
лк:=строки.лк;
пк:=строки.пк;
вс:=строки.вс;
нс:=строки.нс;
памятка:=строки.памятка;
строка:=строки.верхняя;
ОТ со:=вс+1 ДО нс-1 ВЫП
ЕСЛИ строка = строки.текущая ТО
цвет:=Надел.цОтметкиСтрокиПамятки
ИНАЧЕ
цвет:=Надел.цСтроки
КОН;
Окно.ЦветнойПробел(со,лк,со,пк,цвет);
Окно.Цепь(со,лк+1,со,пк-1,памятка.строки[строка]^);
УВЕЛИЧИТЬ(строка)
КОН;
Окно.ЦветнойПробел(вс,лк,вс,пк,Надел.цСтроки);
Окно.ЦветнойПробел(нс,лк,нс,пк,Надел.цСтроки);
Окно.Рамка1(вс,лк,нс,пк)
КОН Отрисовка;
(******************************************************************************)
ЗАДАЧА СтрокуВыше(строки:Доступ);
УКАЗ
ЕСЛИ строки.текущая > 0 ТО
УМЕНЬШИТЬ(строки.текущая);
ЕСЛИ строки.текущая < строки.верхняя ТО
строки.верхняя:=строки.текущая
КОН;
Отрисовка(строки)
КОН
КОН СтрокуВыше;
(******************************************************************************)
ЗАДАЧА СтрокуНиже(строки:Доступ);
УКАЗ
ЕСЛИ строки.текущая < строки.последняя ТО
УВЕЛИЧИТЬ(строки.текущая);
ЕСЛИ строки.текущая > строки.верхняя+строки.нс-строки.вс-2 ТО
строки.верхняя:=строки.текущая-строки.нс+строки.вс+2
КОН;
Отрисовка(строки)
КОН
КОН СтрокуНиже;
(******************************************************************************)
ЗАДАЧА Приём(надел:Надел.Доступ; посылка+:Ввод.Посылка);
ПЕР
строки:Доступ;
УКАЗ
строки:=надел(Доступ);
ДЛЯ посылка ВИДА
| Поле.Отрисовка:
Отрисовка(строки)
| Ввод.ОтМышки:
посылка.отработана:=ВКЛ;
ЕСЛИ Ввод.прокрут В посылка.события ТО
ЕСЛИ посылка.прокрут > 0 ТО
СтрокуВыше(строки)
ИНАЧЕ
СтрокуНиже(строки)
КОН
ИНАЧЕ (* нажали кнопку *)
ЕСЛИ посылка.с = 0 ТО
СтрокуВыше(строки)
АЕСЛИ посылка.с = строки.нс-строки.вс ТО
СтрокуНиже(строки)
ИНАЧЕ
строки.текущая:=строки.верхняя+посылка.с-1;
Отрисовка(строки);
посылка.отработана:=ОТКЛ
КОН
КОН
| Ввод.ОтКлавиш:
ВЫБРАТЬ посылка.код ИЗ
| 25H,26H: (* <-,^*)
СтрокуВыше(строки);
посылка.код:=0
| 27H,28H: (* ->,V*)
СтрокуНиже(строки);
посылка.код:=0
ИНАЧЕ
КОН
ИНАЧЕ
КОН
КОН Приём;
(******************************************************************************)
ЗАДАЧА Создать-(верх,лево,строк,колонок:ЦЕЛ; памятка:Памятка.Доступ):Доступ;
ПЕР
строки:Доступ;
УКАЗ
СОЗДАТЬ(строки);
Надел.Подготовить(строки,верх,лево,строк,колонок,{Надел.прВыбираемый},Приём);
строки.памятка:=памятка;
строки.последняя:=памятка.строк-1;
ВОЗВРАТ строки
КОН Создать;
КОН СтрокиПамятки.
|
|